package com.guaoran.interview.before.algorithm;

import java.util.Arrays;

/**
 * @author : guCheng
 * @title : Short
 * @Description : 
 * 1.冒泡、选择、插入 
 * 2.100以内的素数 
 * 	质数又称素数。 指在一个大于1的自然数中，除了1和此整数自身外，没法被其他自然数整除的数。
 *  换句话说，只有两个正因数（1和自己）的自然数即为素数。 比1大但不是素数的数称为合数。1和0既非素数也非合数。
 *  合数是由若干个质数相乘而得到的。 所以，质数是合数的基础，没有质数就没有合数。
 * @date :2018年3月11日下午1:20:08
 */
public class Short {
	public static void main(String[] args) {
		int[] arr = { 20, 14, 1, 50, 74, 64, 35 };
		System.out.println(Arrays.toString(maoPao(arr)));
		System.out.println(Arrays.toString(xuanZe(arr)));
		System.out.println(Arrays.toString(chaRu(arr)));
		suShu(10);
	}

	/**
	 * 冒泡
	 * 
	 * @param arr
	 * @return
	 */
	public static int[] maoPao(int[] arr) {
		int temp;
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = 0; j < arr.length - 1 - i; j++) {
				if (arr[j] > arr[j + 1]) {
					temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
			}
		}
		return arr;
	}

	// 选择排序
	public static int[] xuanZe(int[] arr) {
		int temp = 0;
		int minIndex = 0;
		for (int i = 0; i < arr.length; i++) {
			minIndex = i;
			for (int j = i; j < arr.length; j++) {
				if (arr[j] < arr[minIndex]) {
					minIndex = j;
				}
				temp = arr[minIndex];
				arr[minIndex] = arr[i];
				arr[i] = temp;
			}
		}
		return arr;
	}

	// 插入排序
	public static int[] chaRu(int[] arr) {
		for (int i = 1; i < arr.length; i++) {
			if (arr[i - 1] > arr[i]) {
				int temp = arr[i];
				int j = i;
				while (j > 0 && arr[j - 1] > temp) {
					arr[j] = arr[j - 1];
					j--;
				}
				arr[j] = temp;
			}
		}
		return arr;
	}
	
	
	public static void suShu(int num) {
		int sum = 0;
		for (int i = 1; i <= num; i++) {
			boolean b = true;
			if (i != 1) {
				for (int j = 2; j < i; j++) {
					if (i % j == 0) {
						b = false;
						break;
					}else{
						
					}
				}

				if (b) {
					sum += i;
					System.out.println(i);
				}
			}
		}
		System.out.println("质数的和为：" + sum);

	}
}
